package com.kapcb.secure.configuration.enums;

import com.kapcb.secure.configuration.core.AbstractSecurerProvider;
import com.kapcb.secure.configuration.core.AesEncryptor;
import com.kapcb.secure.configuration.core.Base64Encryptor;
import com.kapcb.secure.configuration.core.RsaEncryptor;
import com.kapcb.secure.configuration.core.Sm2Encryptor;
import com.kapcb.secure.configuration.core.Sm4Encryptor;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * <a>Title: AlgorithmType </a>
 * <a>Author: kapcb <a>
 * <a>Description: 算法名称 <a>
 *
 * @author Kpacb
 * @version 1.0
 * @date 2024/5/5 9:41
 * @since 1.0
 */
@Getter
@AllArgsConstructor
public enum AlgorithmType {

    /**
     * 默认走yml配置
     */
    DEFAULT(null),

    /**
     * base64
     */
    BASE64(Base64Encryptor.class),

    /**
     * aes
     */
    AES(AesEncryptor.class),

    /**
     * rsa
     */
    RSA(RsaEncryptor.class),

    /**
     * sm2
     */
    SM2(Sm2Encryptor.class),

    /**
     * sm4
     */
    SM4(Sm4Encryptor.class);

    private final Class<? extends AbstractSecurerProvider> clazz;

}
